#include "ScreenShotWidget.h"

#include<QUuid>
#include <QDateTime>

ScreenShotWidget::ScreenShotWidget(QWidget *parent)
    : QWidget{parent}
{
    this->setMinimumSize(200,200);

    //初始化控件
    m_mainlayout=new QHBoxLayout(this);

    m_beginScreenShot=new QPushButton("ScreenShot",this);

    //往布局中添加控件
    m_mainlayout->setAlignment(Qt::AlignRight|Qt::AlignTop);

    m_mainlayout->addWidget(m_beginScreenShot);

    //绑定信号槽
    connect(m_beginScreenShot,&QPushButton::clicked,this,&ScreenShotWidget::OpenScreenShotFunction);


}
///@brief 截屏函数类，每次都实例化一个截屏类
void ScreenShotWidget::OpenScreenShotFunction()
{
    ScreenShot *m_screenCapture = new ScreenShot();

    //之前的问题出现在lambda表达式里用的是引用，将m_tempPicture复制过来的时候，m_screencaptuer销毁，m_tempPicture引用的图片也销毁了，因此是空的图片
    connect(m_screenCapture,&ScreenShot::VerifyScreenShotPicture,[=](){

        //将截图保存
        if(m_screenCapture!=nullptr){
            m_tempPicture=m_screenCapture->GetFinalGrabPixmap();
            //不需要截图立马在图库显示
            if(m_tempPicture.isNull()){
                qDebug()<<"m_screenCapture为空";
            }else{
                //在savepath存储m_tempPicture,使用时间+uuid自动生成作为文件名   //uuid前8位
                QString time_stamp=QDateTime::currentDateTime().toString("yyyyMMdd_HHmmss");
                QString uuid=QUuid::createUuid().toString(QUuid::WithoutBraces).left(8);

                //截图存储在指定路径下
                m_tempPicture.save(m_screenCapture->m_screenShotSavePath+time_stamp+uuid+".png");
            }
            emit m_screenCapture->CloseScreenShotWidget();
        }
    });

}
